package com.briup.day16;

import java.io.*;

/**
 * @author 谭梦寻
 * @version 1.1
 * 序列化一个对象 该对象必须实现序列化接口
 */
public class TestObject {
    public static void main(String[] args) throws IOException {
//        1 声明流 创建流对象（输出流）
//        节点流：操作设备文件的一个流 字节文件输出流
        FileOutputStream fos = new FileOutputStream("obj.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
//        2 操作流 操作一个对象（对象类型任意）
        Student jack = new Student(1, "jack");
        oos.writeObject(jack);
//        3 刷新流
        oos.flush();
//        4 关闭流
        oos.close();
    }
}
class Student implements Serializable {
//    反序列化时 判断字节码文件版本号是否改变 固定值表示
    public static final long serialVersionUID = 1l;
//   transient 修饰类中的属性，使对象在进行序列化的时候，忽略掉指定的属性
    private int id;
    private String name;
   transient private String address;//transient 导致不会被序列化和反序列化

    public Student() {
    }

    public Student(int id, String name, String address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
